package com.example.basic.config;

import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * create 20200511  mybatis-plus插件配置
 */
@Configuration
class MybatisPlusConfigurer {
    /**
     * 乐观锁插件
     */
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }

    /**
     * mybatis-plus 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        // 使用重新分页插件
        PaginationInterceptor paginationInterceptor = new MyPaginationInterceptor();

//        List<ISqlParser> sqlParserList = new ArrayList<>();
//        // 攻击 SQL 阻断解析器、加入解析链
//        sqlParserList.add(new BlockAttackSqlParser() {
//            @Override
//            public void processDelete(Delete delete) {
//                // 如果你想自定义做点什么，可以重写父类方法像这样子
//                // delete :   DELETE FROM sysmn_sys_users1 WHERE (ORG_CODE = ?)
//                if ("sysmn_sys_users1".equals(delete.getTable().getName())) {
//                    // 自定义跳过某个表，其他关联表可以调用 delete.getTables() 判断
////                    List<Table> tables = delete.getTables();
//                    return ;
//                }
//                super.processDelete(delete);
//            }
//        });
//        sqlParserList.add(new BlockAttackSqlParser(){
//            @Override
//            public void processUpdate(Update update) {
//                // 如果你想自定义做点什么，可以重写父类方法像这样子
//                super.processUpdate(update);
//            }
//        } );
//        paginationInterceptor.setSqlParserList(sqlParserList);

        return paginationInterceptor;
    }
}
